package com.cbg.es.service;

import com.cbg.es.dto.EsTableDTO;
import com.cbg.es.entity.EsTable;
import com.cbg.es.repository.IEsTableRepository;
import com.cbg.es.vo.EsTableEditVO;
import com.cbg.es.vo.EsTableVO;
import com.cbg.vo.StatusVO;
import com.shuyuwl.core.service.IDaoService;

import java.util.List;

/**
 * ES表备份 service
 *
 * @author wangjuzheng
 * @since 2019-10-16
 */
public interface IEsTableService extends IDaoService<EsTable, Long, IEsTableRepository> {

    /**
     * 获取未删除的基础表信息
     *
     * @return 基础表信息list
     */
    List<EsTableDTO> findAllEsTable();

    /**
     * 基础表的添加
     *
     * @param esTableVO 基础表添加模型
     */
    void addTable(EsTableVO esTableVO);

    /**
     * 基础表的修改
     *
     * @param esTableEditVO 基础表修改模型
     */
    void saveTable(EsTableEditVO esTableEditVO);

    /**
     * 基础表的删除
     *
     * @param ids id集合
     */
    void deleteTable(List<Long> ids);

    /**
     * 基础表位置的移动
     *
     * @param id            表id
     * @param directionType 移动方向区分(0置顶 1上移 2下移 3置底)
     */
    void updateDirections(Long id, Integer directionType);

    /**
     * 基础表状态的修改
     *
     * @param statusVO 列修改状态模型
     */
    void updateStatus(StatusVO statusVO);

    /**
     * 根据表id获取基础表详细信息
     *
     * @param id 表id
     * @return 全景通查表信息DTO
     */
    EsTableDTO getDetails(Long id);

    /**
     * 验证表是否处于-启用状态
     *
     * @param tableId 表id
     * @return 表信息
     */
    EsTable checkEsTable(Long tableId);

    /**
     * 根据状态查询列表信息
     *
     * @param status 状态（启用）
     * @return 列表信息
     */
    List<EsTable> findAllEsTable(Byte status);

}
